#include "../include/dir.h"
int cut_path(session_t *session, MYSQL *mysql, const char*destDir, int *parentID, char *lastToken, char *buf, int bufLen){
    //先判断是不是缺参数
    if(destDir == NULL||strlen(destDir) == 0){
        strncpy(buf, "缺少参数.", bufLen-1);
        return -1;
    }
    
    char destDirCopy[MAX_PATH_LEN] = {0};
    strncpy(destDirCopy, destDir, sizeof(destDirCopy)-1);//strtok_r需要传入传出参数
    
    //若传进来的是路径 需找最后一个目录名即lastToken
    char *saveptr = NULL;
    char *token = strtok_r(destDirCopy, "/", &saveptr);
    char *tempLastToken = NULL;
    while(token){
        //lastToken = token;  
        //错误   对面传的指针相当于地址  这里值传递直接修改了传过来的地址 并不能修改调用函数里的值
        //应该直接对地址内部值 操作
        tempLastToken = token;
        token = strtok_r(NULL, "/", &saveptr);
    }
    if(tempLastToken == NULL){
        //无效目录路径 全是/////
        strncpy(buf, "无效目录名.", bufLen-1);
        return -1;
    }
    strncpy(lastToken,tempLastToken,MAX_PATH_LEN-1);
    
    char parentPath[MAX_PATH_LEN] = {0};
    //如果lastToken和destDir长度不等 代表参数是路径+目录名
    if(strlen(lastToken) != strlen(destDir)){
        strncpy(parentPath, destDir, strlen(destDir)-strlen(lastToken));
        //查父目录id
        int ret = make_id_path(session, mysql, parentPath, parentID);
        if(ret != 0){
            strncpy(buf, "参数错误.", bufLen-1);
            return -1;
        }
    }
    else{
        //参数就是目录名 -> 当前目录ID就是父目录ID
        *parentID = session->curDirID;
    }
    return 0;
}
